-- *****************************************************************
-- CISCO-SWITCH-HARDWARE-CAPACITY-MIB
--   
-- January 2008, Edward Pham, Guichuan Tang, Jayakumar Kadirvelu
--   
-- Copyright (c) 2008 by cisco Systems, Inc.
-- All rights reserved.
-- *****************************************************************

CISCO-SWITCH-HARDWARE-CAPACITY-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY,
    OBJECT-TYPE,
    Unsigned32,
    Counter32,
    Counter64
        FROM SNMPv2-SMI
    MODULE-COMPLIANCE,
    OBJECT-GROUP
        FROM SNMPv2-CONF
    DateAndTime,
    TEXTUAL-CONVENTION
        FROM SNMPv2-TC
    entPhysicalIndex
        FROM ENTITY-MIB
    CounterBasedGauge64
        FROM HCNUM-TC
    InterfaceIndexOrZero,
    ifIndex
        FROM IF-MIB
    InetAddressType
        FROM INET-ADDRESS-MIB
    Percent
        FROM CISCO-QOS-PIB-MIB
    ciscoMgmt
        FROM CISCO-SMI;


ciscoSwitchHardwareCapacityMIB MODULE-IDENTITY
    LAST-UPDATED    "200807020000Z"
    ORGANIZATION    "Cisco Systems, Inc."
    CONTACT-INFO
            "Cisco Systems
            Customer Service

            Postal: 170 W Tasman Drive
            San Jose, CA 95134
            USA

            Tel: +1 800 553-NETS

            E-mail: cs-lan-switch-snmp@cisco.com"
    DESCRIPTION
        "This MIB module defines the managed objects for hardware
        capacity of Cisco switching devices. The hardware
        capacity information covers the following but not limited
        to features: forwarding, rate-limiter ... 

        The following terms are used throughout the MIB:

        CAM: Content Addressable Memory.
        TCAM: Ternary Content Addressable Memory.
        FIB: Forwarding Information Base.
        VPN: Virtual Private Network.
        CPU rate-limiter: Mechanism to rate-limit or restrict
        undesired traffic to the CPU."
    REVISION        "200807020000Z"
    DESCRIPTION
        "Initial revision of this MIB module."
    ::= { ciscoMgmt 663 }


-- MIB object definitions
ciscoSwitchHardwareCapacityMIBNotifs  OBJECT IDENTIFIER
    ::= { ciscoSwitchHardwareCapacityMIB 0 }

ciscoSwitchHardwareCapacityMIBObjects  OBJECT IDENTIFIER
    ::= { ciscoSwitchHardwareCapacityMIB 1 }

ciscoSwitchHardwareCapacityMIBConformance  OBJECT IDENTIFIER
    ::= { ciscoSwitchHardwareCapacityMIB 2 }

cshcForwarding  OBJECT IDENTIFIER
    ::= { ciscoSwitchHardwareCapacityMIBObjects 1 }

cshcInterface  OBJECT IDENTIFIER
    ::= { ciscoSwitchHardwareCapacityMIBObjects 2 }

cshcCPURateLimiterResources  OBJECT IDENTIFIER
    ::= { ciscoSwitchHardwareCapacityMIBObjects 3 }

cshcIcamResources  OBJECT IDENTIFIER
    ::= { ciscoSwitchHardwareCapacityMIBObjects 4 }

cshcNetflowFlowMaskResources  OBJECT IDENTIFIER
    ::= { ciscoSwitchHardwareCapacityMIBObjects 5 }

-- Textual Conventions

CshcInternalChannelType ::= TEXTUAL-CONVENTION
    STATUS          current
    DESCRIPTION
        "An enumerated value indicating the type of an internal
        channel.

        eobc - ethernet out-of-band channel.

        ibc - in-band channel."
    SYNTAX          INTEGER  {
                        eobc(1),
                        ibc(2)
                    }
-- Layer2 Forwarding group

cshcL2Forwarding  OBJECT IDENTIFIER
    ::= { cshcForwarding 1 }

-- The cshcMacUsageTable

cshcMacUsageTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF CshcMacUsageEntry 
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This table contains MAC table capacity for each
        switching engine, as specified by entPhysicalIndex in
        ENTITY-MIB, capable of providing this information."
    ::= { cshcL2Forwarding 1 }

cshcMacUsageEntry OBJECT-TYPE
    SYNTAX          CshcMacUsageEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "Each row contains management information for MAC
        table hardware capacity on a switching engine."
    INDEX           { entPhysicalIndex } 
    ::= { cshcMacUsageTable 1 }

CshcMacUsageEntry ::= SEQUENCE {
        cshcMacCollisions Counter32,
        cshcMacUsed       Unsigned32,
        cshcMacTotal      Unsigned32
}

cshcMacCollisions OBJECT-TYPE
    SYNTAX          Counter32 
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "The number of Ethernet frames whose source MAC address
        the switching engine failed to learn while constructing
        its MAC table." 
    ::= { cshcMacUsageEntry 1 }

cshcMacUsed OBJECT-TYPE
    SYNTAX          Unsigned32
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "The number of MAC table entries that are currently in use
        for this switching engine." 
    ::= { cshcMacUsageEntry 2 }

cshcMacTotal OBJECT-TYPE
    SYNTAX          Unsigned32
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "The total number of MAC table entries available for this
        switching engine." 
    ::= { cshcMacUsageEntry 3 }
 

-- The cshcVpnCamUsageTable

cshcVpnCamUsageTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF CshcVpnCamUsageEntry 
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This table contains VPN CAM capacity for each
        entity, as specified by entPhysicalIndex in
        ENTITY-MIB, capable of providing this information."
    ::= { cshcL2Forwarding 2 }

cshcVpnCamUsageEntry OBJECT-TYPE
    SYNTAX          CshcVpnCamUsageEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "Each row contains management information for VPN CAM
        hardware capacity on an entity."
    INDEX           { entPhysicalIndex } 
    ::= { cshcVpnCamUsageTable 1 }

CshcVpnCamUsageEntry ::= SEQUENCE {
        cshcVpnCamUsed  Unsigned32,
        cshcVpnCamTotal Unsigned32
}

cshcVpnCamUsed OBJECT-TYPE
    SYNTAX          Unsigned32
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the number of VPN CAM entries
        that are currently in use." 
    ::= { cshcVpnCamUsageEntry 1 }

cshcVpnCamTotal OBJECT-TYPE
    SYNTAX          Unsigned32
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the total number of VPN
        CAM entries." 
    ::= { cshcVpnCamUsageEntry 2 }
 

-- Layer3 Forwarding
cshcL3Forwarding  OBJECT IDENTIFIER
    ::= { cshcForwarding 2 }

-- The cshcFibTcamUsageTable

cshcFibTcamUsageTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF CshcFibTcamUsageEntry 
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This table contains FIB TCAM capacity for each
        entity, as specified by entPhysicalIndex in 
        ENTITY-MIB, capable of providing this information."
    ::= { cshcL3Forwarding 1 }

cshcFibTcamUsageEntry OBJECT-TYPE
    SYNTAX          CshcFibTcamUsageEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "Each row contains management information for FIB TCAM
        hardware capacity on an entity."
    INDEX           { entPhysicalIndex } 
    ::= { cshcFibTcamUsageTable 1 }

CshcFibTcamUsageEntry ::= SEQUENCE {
        cshc72bitsFibTcamUsed   Unsigned32,
        cshc72bitsFibTcamTotal  Unsigned32,
        cshc144bitsFibTcamUsed  Unsigned32,
        cshc144bitsFibTcamTotal Unsigned32
}

cshc72bitsFibTcamUsed OBJECT-TYPE
    SYNTAX          Unsigned32
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the number of 72 bits FIB TCAM
        entries that are currently in use." 
    ::= { cshcFibTcamUsageEntry 1 }

cshc72bitsFibTcamTotal OBJECT-TYPE
    SYNTAX          Unsigned32
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the total number of 72 bits FIB TCAM
        entries available." 
    ::= { cshcFibTcamUsageEntry 2 }

cshc144bitsFibTcamUsed OBJECT-TYPE
    SYNTAX          Unsigned32
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the number of 144 bits FIB TCAM 
        entries that are currently in use." 
    ::= { cshcFibTcamUsageEntry 3 }

cshc144bitsFibTcamTotal OBJECT-TYPE
    SYNTAX          Unsigned32
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the total number of 144 bits FIB TCAM
        entries available." 
    ::= { cshcFibTcamUsageEntry 4 }
 

-- CshcProtocolFibTcamUsageTable

cshcProtocolFibTcamUsageTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF CshcProtocolFibTcamUsageEntry 
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This table contains FIB TCAM usage per specified
        Layer 3 protocol on an entity capable of providing
        this information."
    ::= { cshcL3Forwarding 2 }

cshcProtocolFibTcamUsageEntry OBJECT-TYPE
    SYNTAX          CshcProtocolFibTcamUsageEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "Each row contains management information for FIB TCAM
        usage for the specific Layer 3 protocol on an entity as
        specified by the entPhysicalIndex in ENTITY-MIB."
    INDEX           {
                        entPhysicalIndex,
                        cshcProtocolFibTcamProtocol
                    } 
    ::= { cshcProtocolFibTcamUsageTable 1 }

CshcProtocolFibTcamUsageEntry ::= SEQUENCE {
        cshcProtocolFibTcamProtocol INTEGER ,
        cshcProtocolFibTcamUsed     Unsigned32,
        cshcProtocolFibTcamTotal    Unsigned32
}

cshcProtocolFibTcamProtocol OBJECT-TYPE
    SYNTAX          INTEGER  {
                        ipv4(1),
                        mpls(2),
                        eom(3),
                        ipv6(4),
                        ipv4Multicast(5),
                        ipv6Multicast(6)
                    }
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This object indicates the Layer 3 protocol utilizing FIB TCAM
        resource.

        'ipv4' indicates Internet Protocol version 4.
        'mpls' indicates Multiprotocol Label Switching.
        'eom' indicates Ethernet over MPLS.
        'ipv6' indicates Internet Protocol version 6.
        'ipv4Multicast' indicates Internet Protocol version 4 for
        multicast traffic.
        'ipv6Multicast' indicates Internet Protocol version 6 for
        multicast traffic." 
    ::= { cshcProtocolFibTcamUsageEntry 1 }

cshcProtocolFibTcamUsed OBJECT-TYPE
    SYNTAX          Unsigned32
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the number of FIB TCAM entries
        that are currently in use for the protocol denoted by
        cshcProtocolFibTcamProtocol." 
    ::= { cshcProtocolFibTcamUsageEntry 2 }

cshcProtocolFibTcamTotal OBJECT-TYPE
    SYNTAX          Unsigned32
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the total number of FIB TCAM entry
        is currently allocated for the protocol denoted by
        cshcProtocolFibTcamProtocol." 
    ::= { cshcProtocolFibTcamUsageEntry 3 }
 

-- The cshcAdjacencyUsageTable

cshcAdjacencyUsageTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF CshcAdjacencyUsageEntry 
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This table contains adjacency capacity for each
        entity capable of providing this information."
    ::= { cshcL3Forwarding 3 }

cshcAdjacencyUsageEntry OBJECT-TYPE
    SYNTAX          CshcAdjacencyUsageEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "Each row contains management information for adjacency
        hardware capacity on an entity, as specified by
        entPhysicalIndex in ENTITY-MIB."
    INDEX           { entPhysicalIndex } 
    ::= { cshcAdjacencyUsageTable 1 }

CshcAdjacencyUsageEntry ::= SEQUENCE {
        cshcAdjacencyUsed  Unsigned32,
        cshcAdjacencyTotal Unsigned32
}

cshcAdjacencyUsed OBJECT-TYPE
    SYNTAX          Unsigned32
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the number of adjacency entries
        that are currently in use." 
    ::= { cshcAdjacencyUsageEntry 1 }

cshcAdjacencyTotal OBJECT-TYPE
    SYNTAX          Unsigned32
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the total number of adjacency
        entries available." 
    ::= { cshcAdjacencyUsageEntry 2 }
 

-- The cshcForwardingLoadTable

cshcForwardingLoadTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF CshcForwardingLoadEntry 
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This table contains Layer 3 forwarding load information
        for each switching engine capable of providing this
        information."
    ::= { cshcL3Forwarding 4 }

cshcForwardingLoadEntry OBJECT-TYPE
    SYNTAX          CshcForwardingLoadEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "Each row contains management information of Layer 3
        forwarding load on a switching engine, as specified
        by entPhysicalIndex in ENTITY-MIB."
    INDEX           { entPhysicalIndex } 
    ::= { cshcForwardingLoadTable 1 }

CshcForwardingLoadEntry ::= SEQUENCE {
        cshcForwardingLoadPktRate     CounterBasedGauge64,
        cshcForwardingLoadPktPeakRate CounterBasedGauge64,
        cshcForwardingLoadPktPeakTime DateAndTime 
}

cshcForwardingLoadPktRate OBJECT-TYPE
    SYNTAX          CounterBasedGauge64
    UNITS           "pps"
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the forwarding rate of Layer 3
        packets." 
    ::= { cshcForwardingLoadEntry 1 }

cshcForwardingLoadPktPeakRate OBJECT-TYPE
    SYNTAX          CounterBasedGauge64
    UNITS           "pps"
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the peak forwarding rate of Layer 3
        packets." 
    ::= { cshcForwardingLoadEntry 2 }

cshcForwardingLoadPktPeakTime OBJECT-TYPE
    SYNTAX          DateAndTime 
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object describes the time when the peak forwarding rate
        of Layer 3 packets denoted by cshcForwardingLoadPktPeakRate
        occurs." 
    ::= { cshcForwardingLoadEntry 3 }
 

-- Interface group

cshcModuleInterfaceDropsTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF CshcModuleInterfaceDropsEntry 
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This table contains interface drops information on each
        module capable of providing this information."
    ::= { cshcInterface 1 }

cshcModuleInterfaceDropsEntry OBJECT-TYPE
    SYNTAX          CshcModuleInterfaceDropsEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "Each row contains management information for dropped traffic
        on a specific module, identified by the entPhysicalIndex 
        in ENTITY-MIB, and capable of providing this information."
    INDEX           { entPhysicalIndex } 
    ::= { cshcModuleInterfaceDropsTable 1 }

CshcModuleInterfaceDropsEntry ::= SEQUENCE {
        cshcModTxTotalDroppedPackets Counter64,
        cshcModRxTotalDroppedPackets Counter64,
        cshcModTxTopDropPort         InterfaceIndexOrZero,
        cshcModRxTopDropPort         InterfaceIndexOrZero
}

cshcModTxTotalDroppedPackets OBJECT-TYPE
    SYNTAX          Counter64
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "The total dropped outbound packets on all
        physical interfaces of this module." 
    ::= { cshcModuleInterfaceDropsEntry 1 }

cshcModRxTotalDroppedPackets OBJECT-TYPE
    SYNTAX          Counter64
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "The total dropped inbound packets on all
        physical interfaces of this module." 
    ::= { cshcModuleInterfaceDropsEntry 2 }

cshcModTxTopDropPort OBJECT-TYPE
    SYNTAX          InterfaceIndexOrZero
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "The ifIndex value of the interface that has the largest
        number of total dropped outbound packets among all the 
        physical interfaces on this module.

        If there were no dropped outbound packets on any  
        physical interfaces of this module, this object has 
        the value 0." 
    ::= { cshcModuleInterfaceDropsEntry 3 }

cshcModRxTopDropPort OBJECT-TYPE
    SYNTAX          InterfaceIndexOrZero
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "The ifIndex value of the interface that has the largest
        number of total dropped inbound packets among all the 
        physical interfaces of this module.

        If there were no dropped inbound packets on any physical
        interfaces of this module, this object has the value 0." 
    ::= { cshcModuleInterfaceDropsEntry 4 }
 


cshcInterfaceBufferTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF CshcInterfaceBufferEntry 
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This table contains buffer capacity information for each
        physical interface capable of providing this information."
    ::= { cshcInterface 2 }

cshcInterfaceBufferEntry OBJECT-TYPE
    SYNTAX          CshcInterfaceBufferEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "Each row contains buffer capacity information for a
        specific physical interface capable of providing this 
        information."
    INDEX           { ifIndex } 
    ::= { cshcInterfaceBufferTable 1 }

CshcInterfaceBufferEntry ::= SEQUENCE {
        cshcInterfaceTransmitBufferSize Unsigned32,
        cshcInterfaceReceiveBufferSize  Unsigned32
}

cshcInterfaceTransmitBufferSize OBJECT-TYPE
    SYNTAX          Unsigned32
    UNITS           "bytes"
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "The aggregate buffer size of all the transmit queues on this
        interface." 
    ::= { cshcInterfaceBufferEntry 1 }

cshcInterfaceReceiveBufferSize OBJECT-TYPE
    SYNTAX          Unsigned32
    UNITS           "bytes"
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "The aggregate buffer size of all the receive queues on this
        interface." 
    ::= { cshcInterfaceBufferEntry 2 }
 


cshcInternalChannelTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF CshcInternalChannelEntry 
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This table contains information for each internal channel
        interface on each physical entity, such as a module, 
        capable of providing this information."
    ::= { cshcInterface 3 }

cshcInternalChannelEntry OBJECT-TYPE
    SYNTAX          CshcInternalChannelEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "Each row contains management information for an internal
        channel interface of a specific type on a specific physical
        entity, such as a module, identified by the entPhysicalIndex
        in ENTITY-MIB, and capable of providing this information."
    INDEX           {
                        entPhysicalIndex,
                        cshcIntlChnlType
                    } 
    ::= { cshcInternalChannelTable 1 }

CshcInternalChannelEntry ::= SEQUENCE {
        cshcIntlChnlType             CshcInternalChannelType,
        cshcIntlChnlRxPacketRate     CounterBasedGauge64,
        cshcIntlChnlRxTotalPackets   Counter64,
        cshcIntlChnlRxDroppedPackets Counter64,
        cshcIntlChnlTxPacketRate     CounterBasedGauge64,
        cshcIntlChnlTxTotalPackets   Counter64,
        cshcIntlChnlTxDroppedPackets Counter64
}

cshcIntlChnlType OBJECT-TYPE
    SYNTAX          CshcInternalChannelType
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "The type of this internal channel." 
    ::= { cshcInternalChannelEntry 1 }

cshcIntlChnlRxPacketRate OBJECT-TYPE
    SYNTAX          CounterBasedGauge64
    UNITS           "packets per second"
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "Five minute exponentially-decayed moving
        average of inbound packet rate for this
        channel." 
    ::= { cshcInternalChannelEntry 2 }

cshcIntlChnlRxTotalPackets OBJECT-TYPE
    SYNTAX          Counter64
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "The total number of the inbound packets accounted for
        this channel." 
    ::= { cshcInternalChannelEntry 3 }

cshcIntlChnlRxDroppedPackets OBJECT-TYPE
    SYNTAX          Counter64
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "The number of dropped inbound packets for this channel." 
    ::= { cshcInternalChannelEntry 4 }

cshcIntlChnlTxPacketRate OBJECT-TYPE
    SYNTAX          CounterBasedGauge64
    UNITS           "packets per second"
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "Five minute exponentially-decayed moving
        average of outbound packet rate for this
        channel." 
    ::= { cshcInternalChannelEntry 5 }

cshcIntlChnlTxTotalPackets OBJECT-TYPE
    SYNTAX          Counter64
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "The total number of the outbound packets accounted for
        this channel." 
    ::= { cshcInternalChannelEntry 6 }

cshcIntlChnlTxDroppedPackets OBJECT-TYPE
    SYNTAX          Counter64
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "The number of dropped outbound packets for this channel." 
    ::= { cshcInternalChannelEntry 7 }
 

-- Rate Limit Resources group
--   

--   
-- The cshcCPURateLimiterResourcesTable

cshcCPURateLimiterResourcesTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF CshcCPURateLimiterResourcesEntry 
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This table contains information regarding 
        CPU rate limiters resources."
    ::= { cshcCPURateLimiterResources 1 }

cshcCPURateLimiterResourcesEntry OBJECT-TYPE
    SYNTAX          CshcCPURateLimiterResourcesEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "Each row contains management information of CPU rate
        limiter resources for a managed network layer."
    INDEX           { cshcCPURateLimiterNetworkLayer } 
    ::= { cshcCPURateLimiterResourcesTable 1 }

CshcCPURateLimiterResourcesEntry ::= SEQUENCE {
        cshcCPURateLimiterNetworkLayer INTEGER ,
        cshcCPURateLimiterTotal        Unsigned32,
        cshcCPURateLimiterUsed         Unsigned32,
        cshcCPURateLimiterReserved     Unsigned32
}

cshcCPURateLimiterNetworkLayer OBJECT-TYPE
    SYNTAX          INTEGER  {
                        layer2(1),
                        layer3(2)
                    }
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This object indicates the network layer for which
        the CPU rate limiters are applied." 
    ::= { cshcCPURateLimiterResourcesEntry 1 }

cshcCPURateLimiterTotal OBJECT-TYPE
    SYNTAX          Unsigned32
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the total number of CPU rate
        limiters avaiable." 
    ::= { cshcCPURateLimiterResourcesEntry 2 }

cshcCPURateLimiterUsed OBJECT-TYPE
    SYNTAX          Unsigned32
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the number of CPU rate limiters
        that is currently in use." 
    ::= { cshcCPURateLimiterResourcesEntry 3 }

cshcCPURateLimiterReserved OBJECT-TYPE
    SYNTAX          Unsigned32
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the number of CPU rate limiters
        which is reserved by the switching device." 
    ::= { cshcCPURateLimiterResourcesEntry 4 }
 

-- ICAM Resources group
--   

--   
-- The cshcIcamUtilizationTable

cshcIcamUtilizationTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF CshcIcamUtilizationEntry 
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This table contains information regarding ICAM (Internal
        Content Addressable Memory) Resource usage and utilization
        for a switching engine capable of providing this
        information."
    ::= { cshcIcamResources 1 }

cshcIcamUtilizationEntry OBJECT-TYPE
    SYNTAX          CshcIcamUtilizationEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "Each row contains management information of ICAM
        usage and utilization for a switching engine, as specified
        as specified by entPhysicalIndex in ENTITY-MIB." 
    INDEX           { entPhysicalIndex } 
    ::= { cshcIcamUtilizationTable 1 }

CshcIcamUtilizationEntry ::= SEQUENCE {
        cshcIcamCreated     Unsigned32,
        cshcIcamFailed      Unsigned32,
        cshcIcamUtilization Percent
}

cshcIcamCreated OBJECT-TYPE
    SYNTAX          Unsigned32
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the total number of ICAM
        entries created." 
    ::= { cshcIcamUtilizationEntry 1 }

cshcIcamFailed OBJECT-TYPE
    SYNTAX          Unsigned32
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the number of ICAM entries
        which failed to be created." 
    ::= { cshcIcamUtilizationEntry 2 }

cshcIcamUtilization OBJECT-TYPE
    SYNTAX          Percent
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the ICAM utlization in percentage
        in this switching engine." 
    ::= { cshcIcamUtilizationEntry 3 }
 

-- Flow Mask  Resources group
--   

--   
-- The cshcNetflowFlowMaskTable

cshcNetflowFlowMaskTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF CshcNetflowFlowMaskEntry 
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This table contains information regarding Netflow flow mask
        features supported."
    ::= { cshcNetflowFlowMaskResources 1 }

cshcNetflowFlowMaskEntry OBJECT-TYPE
    SYNTAX          CshcNetflowFlowMaskEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "Each row contains supported feature information of
        a Netflow flow mask supported by the device."
    INDEX           {
                        cshcNetflowFlowMaskAddrType,
                        cshcNetflowFlowMaskIndex
                    } 
    ::= { cshcNetflowFlowMaskTable 1 }

CshcNetflowFlowMaskEntry ::= SEQUENCE {
        cshcNetflowFlowMaskAddrType InetAddressType,
        cshcNetflowFlowMaskIndex    Unsigned32,
        cshcNetflowFlowMaskType     INTEGER ,
        cshcNetflowFlowMaskFeature  BITS
}

cshcNetflowFlowMaskAddrType OBJECT-TYPE
    SYNTAX          InetAddressType
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This object indicates Internet address type for this
        flow mask." 
    ::= { cshcNetflowFlowMaskEntry 1 }

cshcNetflowFlowMaskIndex OBJECT-TYPE
    SYNTAX          Unsigned32
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This object indicates the unique flow mask number
        for a specific Internet address type." 
    ::= { cshcNetflowFlowMaskEntry 2 }

cshcNetflowFlowMaskType OBJECT-TYPE
    SYNTAX          INTEGER  {
                        null(1),
                        srcOnly(2),
                        destOnly(3),
                        srcDest(4),
                        interfaceSrcDest(5),
                        fullFlow(6),
                        interfaceFullFlow(7),
                        interfaceFullFlowOrFullFlow(8),
                        atleastInterfaceSrcDest(9),
                        atleastFullFlow(10),
                        atleastInterfaceFullFlow(11),
                        atleastSrc(12),
                        atleastDst(13),
                        atleastSrcDst(14),
                        shortest(15),
                        lessThanFullFlow(16),
                        exceptFullFlow(17),
                        exceptInterfaceFullFlow(18),
                        interfaceDest(19),
                        atleastInterfaceDest(20),
                        interfaceSrc(21),
                        atleastInterfaceSrc(22),
                        srcOnlyCR(23),
                        dstOnlyCR(24),
                        fullFlowCR(25),
                        interfaceFullFlowCR(26),
                        max(27),
                        conflict(28),
                        err(29),
                        unused(30),
                        fullFlow1(31),
                        fullFlow2(32),
                        fullFlow3(33),
                        vlanFullFlow1(34),
                        vlanFullFlow2(35),
                        vlanFullFlow3(36),
                        reserved(37)
                    }
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the type of flow mask." 
    ::= { cshcNetflowFlowMaskEntry 3 }

cshcNetflowFlowMaskFeature OBJECT-TYPE
    SYNTAX          BITS {
                        null(0),
                        ipAcgIngress(1),
                        ipAcgEgress(2),
                        natIngress(3),
                        natEngress(4),
                        natInside(5),
                        pbr(6),
                        cryptoIngress(7),
                        cryptoEgress(8),
                        qos(9),
                        idsIngress(10),
                        tcpIntrcptEgress(11),
                        guardian(12),
                        ipv6AcgIngress(13),
                        ipv6AcgEgress(14),
                        mcastAcgIngress(15),
                        mcastAcgEgress(16),
                        mcastStub(17),
                        mcastUrd(18),
                        ipDsIngress(19),
                        ipDsEgress(20),
                        ipVaclIngress(21),
                        ipVaclEgress(22),
                        macVaclIngress(23),
                        macVaclEgress(24),
                        inspIngress(25),
                        inspEgress(26),
                        authProxy(27),
                        rpf(28),
                        wccpIngress(29),
                        wccpEgress(30),
                        inspDummyIngress(31),
                        inspDummyEgress(32),
                        nbarIngress(33),
                        nbarEgress(34),
                        ipv6Rpf(35),
                        ipv6GlobalDefault(36),
                        dai(37),
                        ipPaclIngress(38),
                        macPaclIngress(39),
                        mplsIcmpBridge(40),
                        ipSlb(41),
                        ipv4Default(42),
                        ipv6Default(43),
                        mplsDefault(44),
                        erSpanTermination(45),
                        ipv6Mcast(46),
                        ipDsL3Ingress(47),
                        ipDsL3Egress(48),
                        cryptoRedirectIngress(49),
                        otherDefault(50),
                        ipRecir(51),
                        iPAdmissionL3Eou(52),
                        iPAdmissionL2Eou(53),
                        iPAdmissionL2EouArp(54),
                        ipAdmissionL2Http(55),
                        ipAdmissionL2HttpArp(56),
                        ipv4L3IntfNde(57),
                        ipv4L2IntfNde(58),
                        ipSguardIngress(59),
                        pvtHostsIngress(60),
                        vrfNatIngress(61),
                        tcpAdjustMssIngress(62),
                        tcpAdjustMssEgress(63),
                        eomIw(64),
                        eomIw2(65),
                        ipv4VrfNdeEgress(66),
                        l1Egress(67),
                        l1Ingress(68),
                        l1GlobalEgress(69),
                        l1GlobalIngress(70),
                        ipDot1xAcl(71),
                        ipDot1xAclArp(72),
                        dot1ad(73),
                        ipSpanPcap(74),
                        ipv6CryptoRedirectIngress(75),
                        svcAcclrtIngress(76),
                        ipv6SvcAcclrtIngress(77),
                        nfAggregation(78),
                        nfSampling(79),
                        ipv6Guardian(80),
                        ipv6Qos(81),
                        none(82)
                    }
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the features supported by this flow mask." 
    ::= { cshcNetflowFlowMaskEntry 4 }
 

-- Conformance
ciscoSwitchHardwareCapacityMIBCompliances  OBJECT IDENTIFIER
    ::= { ciscoSwitchHardwareCapacityMIBConformance 1 }

ciscoSwitchHardwareCapacityMIBGroups  OBJECT IDENTIFIER
    ::= { ciscoSwitchHardwareCapacityMIBConformance 2 }


-- ciscoSwitchHardwareCapacityMIBCompliance
ciscoSwitchHardwareCapacityMIBCompliance MODULE-COMPLIANCE
    STATUS          current
    DESCRIPTION
        "The compliance statement for
        CISCO-SWITCH-HARDWARE-CAPACITY-MIB"
    MODULE          -- this module
    MANDATORY-GROUPS {
                        cshcMacUsageGroup,
                        cshcVpnCamUsageGroup,
                        cshcFibTcamUsageGroup,
                        cshcProtocolFibTcamUsageGroup,
                        cshcAdjacencyUsageGroup,
                        cshcForwardingLoadGroup, 
                        cshcModuleInterfaceDropsGroup,
                        cshcInterfaceBufferGroup,
                        cshcInternalChannelGroup
                    }

    GROUP           cshcCPURateLimiterResourcesGroup
    DESCRIPTION
        "This group is mandatory where Rate Limit feature
        is supported."

    GROUP           cshcIcamResourcesGroup
    DESCRIPTION
        "This group is mandatory where ICAM is supported."

    GROUP           cshcNetflowFlowMaskResourceGroup
    DESCRIPTION
        "This group is mandatory where Netflow FlowMask feature
        is supported."
    ::= { ciscoSwitchHardwareCapacityMIBCompliances 1 }

-- Units of Conformance
cshcMacUsageGroup OBJECT-GROUP 
    OBJECTS { 
          cshcMacCollisions, 
          cshcMacUsed, 
          cshcMacTotal 
    } 
    STATUS          current
    DESCRIPTION
        "A collection of objects which provides Layer 2 
        forwarding hardware capacity information in the device."
    ::= { ciscoSwitchHardwareCapacityMIBGroups 1 }
 
cshcVpnCamUsageGroup OBJECT-GROUP 
    OBJECTS { 
         cshcVpnCamUsed, 
         cshcVpnCamTotal 
    } 
    STATUS          current
    DESCRIPTION
        "A collection of objects which provides VPN CAM 
        hardware capacity information in the device."
    ::= { ciscoSwitchHardwareCapacityMIBGroups 2 }
 
cshcFibTcamUsageGroup OBJECT-GROUP 
    OBJECTS { 
         cshc72bitsFibTcamUsed, 
         cshc72bitsFibTcamTotal, 
         cshc144bitsFibTcamUsed, 
         cshc144bitsFibTcamTotal 
    } 
    STATUS          current
    DESCRIPTION
        "A collection of objects which provides FIB TCAM 
        hardware capacity information in the device."
    ::= { ciscoSwitchHardwareCapacityMIBGroups 3 }
 
 
cshcProtocolFibTcamUsageGroup OBJECT-GROUP 
    OBJECTS { 
         cshcProtocolFibTcamUsed, 
         cshcProtocolFibTcamTotal 
    } 
    STATUS          current
    DESCRIPTION
        "A collection of objects which provides FIB TCAM  
        hardware capacity information in conjunction with
        Layer 3 protocol in the device."
    ::= { ciscoSwitchHardwareCapacityMIBGroups 4 }
 
 
cshcAdjacencyUsageGroup OBJECT-GROUP 
    OBJECTS { 
         cshcAdjacencyUsed, 
         cshcAdjacencyTotal 
    } 
    STATUS          current
    DESCRIPTION
        "A collection of objects which provides adjacency 
        hardware capacity information in the device."
    ::= { ciscoSwitchHardwareCapacityMIBGroups 5 }
 
 
cshcForwardingLoadGroup OBJECT-GROUP 
    OBJECTS {
         cshcForwardingLoadPktRate, 
         cshcForwardingLoadPktPeakRate, 
         cshcForwardingLoadPktPeakTime 
    } 
    STATUS          current
    DESCRIPTION
        "A collection of objects which provides forwarding 
        load information in the device."
    ::= { ciscoSwitchHardwareCapacityMIBGroups 6 }

cshcModuleInterfaceDropsGroup OBJECT-GROUP
    OBJECTS         {
                        cshcModTxTotalDroppedPackets,
                        cshcModRxTotalDroppedPackets,
                        cshcModTxTopDropPort,
                        cshcModRxTopDropPort
                    }
    STATUS          current
    DESCRIPTION
        "A collection of objects which provides linecard
        drop traffic information on the device."
    ::= { ciscoSwitchHardwareCapacityMIBGroups 7 }

cshcInterfaceBufferGroup OBJECT-GROUP
    OBJECTS         {
                        cshcInterfaceTransmitBufferSize,
                        cshcInterfaceReceiveBufferSize
                    }
    STATUS          current
    DESCRIPTION
        "A collection of objects which provides interface
        buffer information on the device."
    ::= { ciscoSwitchHardwareCapacityMIBGroups 8 }

cshcInternalChannelGroup OBJECT-GROUP
    OBJECTS         {
                        cshcIntlChnlRxPacketRate,
                        cshcIntlChnlRxTotalPackets,
                        cshcIntlChnlRxDroppedPackets,
                        cshcIntlChnlTxPacketRate,
                        cshcIntlChnlTxTotalPackets,
                        cshcIntlChnlTxDroppedPackets
                    }
    STATUS          current
    DESCRIPTION
        "A collection of objects which provides internal
        channel information on the device."
    ::= { ciscoSwitchHardwareCapacityMIBGroups 9 }

cshcCPURateLimiterResourcesGroup OBJECT-GROUP
    OBJECTS         {
                        cshcCPURateLimiterTotal,
                        cshcCPURateLimiterUsed,
                        cshcCPURateLimiterReserved
                    }
    STATUS          current
    DESCRIPTION
        "A collection of objects which provides CPU rate limiter
        resource in the device."
    ::= { ciscoSwitchHardwareCapacityMIBGroups 10 }

cshcIcamResourcesGroup OBJECT-GROUP
    OBJECTS         {
                        cshcIcamCreated,
                        cshcIcamFailed,
                        cshcIcamUtilization
                    }
    STATUS          current
    DESCRIPTION
        "A collection of objects which provides ICAM resources
        information in the device."
    ::= { ciscoSwitchHardwareCapacityMIBGroups 11 }

cshcNetflowFlowMaskResourceGroup OBJECT-GROUP
    OBJECTS         {
                        cshcNetflowFlowMaskType,
                        cshcNetflowFlowMaskFeature
                    }
    STATUS          current
    DESCRIPTION
        "A collection of objects which provides Netflow FlowMask
        information in the device."
    ::= { ciscoSwitchHardwareCapacityMIBGroups 12 }

END